1. The Field of the Invention
This invention relates to computer systems and, more particularly, to novel systems and methods for extending the instruction set of existing CPUs via software “welding” techniques.
2. The Background Art
A CPU, also known as a processor, is the processing center of a computer system. A CPU may be designed with a collection of machine language instructions, or instruction set, that the processor understands and follows. Program code, developed to perform a desired task, must ultimately perform its various functions and routines using the instruction set of the processor on which it is processed. As CPU manufacturers, such as Intel, have released newer and faster processor architectures, one hallmark of their evolution and design has been backward compatibility, meaning that newer chips will execute the instruction set of previous processors. However, program code written for newer architectures may not run on the older processors, since new instructions may be utilized. In some cases, the instruction set of a new CPU architecture may only include a few new instructions as compared to those of its predecessor.
For example, the Intel 80486 (the 486) processor architecture added 6 new instructions to extend its Intel 80386 (the 386) instruction set core. Likewise, the Intel Pentium added 8 new instructions to its 486 instruction set core. In some cases, software may utilize the new instructions, and therefore, not run on older processors. These new instructions, if encountered by an older processor, may incur errors in the operation thereof, and may cause a system shutdown or the like.
As new instructions are added, some software may check the characteristics, such as clock speed, architecture, and the like, of the processor on which it is running. Certain instructions, when executed, simply identify selected characteristics of the processor. These characteristics may be used like flags by the software to decide whether to proceed with execution or to modify execution in some way. For example, the CPUID instruction, introduced to the core instruction set in upgraded processors, may return the values of certain characteristics of a given processor. Some processors may not support this instruction and will, therefore, incur errors when encountering it.
Installation programs, used to install many software applications, may check the characteristics of a processor and require that a computer meet a pre-selected set of requirements. For example, a purchased software package may state on its packaging a minimum CPU architecture, clock speed, RAM requirements, secondary storage (disk capacity) requirements, or a combination thereof to operate the software. If these minimum system requirements are not met, the installation program may abort the installation process and prevent a user from installing the desired software.
Some software manufacturers may justify this action in order to ensure that a software package performs at what the manufacturer considers a satisfactory level. Unfortunately, some requirements may be artificially imposed. That is, a program may actually run at a satisfactory performance level, as deemed by a user of a computer system, but the user may be prevented from installing and running the software because the manufacturer has artificially locked out selected computer systems. In a sense, the manufacturer of the software has forced obsolescence of the computer system, as in the case of Microsoft and the Windows operating system. This may require a user to unnecessarily upgrade or purchase a new computer system, satisfying the requirements, incurring unneeded frustration, effort, collateral programming, and expense to the user.
In accordance with the issues and problems described hereinbefore, what is needed is a software solution whereby an older processor may emulate a newer processor's extended features without incurring a significant performance penalty, thereby eliminating the need to unnecessarily upgrade to a newer processor or computer system to host newer operating systems and software.
What is further needed is a software solution to make an older processor indistinguishable from a newer processor or a CPU upgrade to substantially all software accessed thereby, providing the same features and functionality.
What is further needed is a method to effectively seamlessly integrate, “weld”, such a software solution into the operation of an older processor, in order to mediate and monitor all access and use of the processor to replicate an upgraded or later model processor's behavior.